\documentclass[12pt,a4paper]{article}
\usepackage[utf8x]{inputenc}
\usepackage{multicol}
\usepackage{ucs}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}    
\author{Bendavid Olivier, Haderer Nicolas}
\title{DICOSOFT}
\begin{document}

%\maketitle
%\tableofcontents
%\newpage
%			\begin{multicols}{2}

\section{Structure}
	DICOSOFT est le prototype réalisé afin de tester des méthodes de classifications de composants.
	Comme le montre la figure du schéma général, il se compose de deux outils principaux, le premier permettant de collecter les 
	informations d'une 	librairie de composants et le second permettant leurs classifications. Son implémentation a été réalisée en 
	java. Le langage de description de composant analysé est FRACTAL-ADL (Fractal 
	Architecture Description Language), il s'agit d'un langage ouvert et extensible permettant de définir des architectures de 
	composants suivant le modèle FRACTAL, qui est lui même ouvert et extensible.

	
	\begin{center}
			\includegraphics[scale=0.2]{figures/schemaGeneral.png}
	\end{center}		

	\subsection{Le méta-modèle}

		Ce méta-modèle nommé ( Cocola : component connexity lattice ???)  permet de faire le lien entre la description d'un composant 
		et les concepts de programmation orienté objet sur lesquels repose son implémentation. 	Il a été réalisé a l'aide d'EMF 
		(Eclipse Modelling Framework). Il permet donc de généraliser notre définition d'une architecture de composant sur laquelle 
		nous nous basons pour l'analyse et la classification.
		\paragraph{}Voici la représentation du méta-modèle Cocola.
		\begin{center}
			\includegraphics[scale=0.5]{figures/metamodel.png}
		\end{center}	

		\subsection{L'outil analyse}
		L'analyse d'une librairie de composants consiste au parsing des fichiers de code source et des descriptions de composants.
		Il est nécessaire de parser le code source d'un composant car son fichier de description ne contient que les signatures des 
		interfaces fournies ou requises dont il dispose. Cela permet donc d'obtenir les informations sur les fonctionnalités de ces 
		interfaces.
		Les différents fichiers de code source sont : les ".java", ".class" et ".jar" qui sont respectivement parsés par 
		l'utilisation du framework "org.apache.ws.jaxme", du package "java.lang.reflect" et du package "java.util.jar".
		Les fichiers de description de composants ".fractal" basés sur le standard XML sont parsés a l'aide du package 
		"org.w3c.dom.Document". 
		\begin{center}
			\includegraphics[scale=0.22]{figures/filesAnalysers.png}
		\end{center}
		Voici le diagramme UML représentant l'organisation des différentes classes permettant le parsing.
		Les informations des parsers sont rassemblées par la classe InfoBinder, qui permet d'éliminer des informations redondantes.
		Enfin l'ensemble des informations est regroupé dans un fichier ".xmi" qui est une instance sérialisée de notre méta-modèle.
		
		\subsection{L'outil classification}


	L'outil de classification est un framework dédié à la classification de composants logiciels.
	Son point d'entrée se base sur une instanciation du méta-modèle cocola fourni par l'outil d'analyse. Le framework  
	implémente les algorithmes permettant de calculer les différentes classifications présentées précédemment dans le rapport. Ces 
	algorithmes consistent majoritairement a générer successivement les treillis des méthodes des interfaces et des composants 
	représentant leur classification respective. Pour la génération des treillis l'outil se base sur ERCA qui est un framework visant 
	a faciliter l'utilisation de concept d'analyse formel et relationnel. Le schéma outilClassification présente la structure d'une 
	classification.
	
	\begin{center}
			\includegraphics[scale=0.4]{figures/outilClassification.png}
	\end{center}	
	

		%\subsubsection{L'interface graphique}
		%L'interface graphique se base sur le modèle MVC (modèle vue controlleur).
\section{Fonctionnel}
	DICOSOFT permet a l'aide de boites de dialogues de sélectionner, un dossier de librairie de composant a analyser, de lancer 
	différents algorithmes afin de classifier les librairies suivant deux modes d'affichage principaux, un premier dans lequel on 
	voit tous les concepts, abstraits et concrets, "complete" et un second, "GSH" (Gallois Sub Hierarchy) nous permettant d'obtenir 
	un treillis débarrassé de la plupart des concepts 'abstraits'.	
	L'outil permet d'exporter les treillis sous différents formats (pdf, png et svg).
	\begin{center}
			\includegraphics[scale=0.4]{figures/dicosoft3.png}
	\end{center}		
	

%		  \ldots
%\end{multicols}
\end{document}	